package org.zsl.android.map;import android.app.Activity;import android.os.Bundle;import android.util.Log;import com.baidu.location.BDLocation;import com.baidu.location.BDLocationListener;import com.baidu.location.LocationClient;import com.baidu.location.LocationClientOption;import com.baidu.mapapi.SDKInitializer;import com.baidu.mapapi.map.BaiduMap;import com.baidu.mapapi.map.BitmapDescriptor;import com.baidu.mapapi.map.MapStatusUpdate;import com.baidu.mapapi.map.MapStatusUpdateFactory;import com.baidu.mapapi.map.MapView;import com.baidu.mapapi.map.MyLocationData;import com.baidu.mapapi.model.LatLng;public class MainActivity extends Activity {public MapView mapView = null;public BaiduMap baiduMap = null;// 定位相关声明public LocationClient locationClient = null;//自定义图标BitmapDescriptor mCurrentMarker = null;boolean isFirstLoc = true;// 是否首次定位public BDLocationListener myListener = new BDLocationListener() {@Overridepublic void onReceiveLocation(BDLocation location) {// map view 销毁后不在处理新接收的位置if (location == null || mapView == null)return;MyLocationData locData = new MyLocationData.Builder().accuracy(location.getRadius())// 此处设置开发者获取到的方向信息,顺时针0-360.direction(100).latitude(location.getLatitude()).longitude(location.getLongitude()).build();baiduMap.setMyLocationData(locData);//设置定位数据if (isFirstLoc) {isFirstLoc = false;LatLng ll = new LatLng(location.getLatitude(),location.getLongitude());MapStatusUpdate u = MapStatusUpdateFactory.newLatLngZoom(ll, 16);//设置地图中心点以及缩放级别//MapStatusUpdate u = MapStatusUpdateFactory.newLatLng(ll);baiduMap.animateMapStatus(u);}}};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// 在使用SDK各组件之前初始化context信息,传入ApplicationContext// 注意该方法要再setContentView方法之前实现SDKInitializer.initialize(getApplicationContext());setContentView(R.layout.main_activity);mapView = (MapView) this.findViewById(R.id.mapView); // 获取地图控件引用baiduMap = mapView.getMap();//开启定位图层baiduMap.setMyLocationEnabled(true);locationClient = new LocationClient(getApplicationContext()); // 实例化LocationClient类locationClient.registerLocationListener(myListener); // 注册监听函数this.setLocationOption();//设置定位参数locationClient.start(); // 开始定位// baiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL); // 设置为一般地图// baiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE); //设置为卫星地图// baiduMap.setTrafficEnabled(true); //开启交通图}// 三个状态实现地图生命周期管理@Overrideprotected void onDestroy() {//退出时销毁定位locationClient.stop();baiduMap.setMyLocationEnabled(false);// TODO Auto-generated method stubsuper.onDestroy();mapView.onDestroy();mapView = null;}@Overrideprotected void onResume() {// TODO Auto-generated method stubsuper.onResume();mapView.onResume();}@Overrideprotected void onPause() {// TODO Auto-generated method stubsuper.onPause();mapView.onPause();}/** * 设置定位参数 */private void setLocationOption() {LocationClientOption option = new LocationClientOption();option.setOpenGps(true); // 打开GPSoption.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);// 设置定位模式option.setCoorType("bd09ll"); // 返回的定位结果是百度经纬度,默认值gcj02option.setScanSpan(5000); // 设置发起定位请求的间隔时间为5000msoption.setIsNeedAddress(true); // 返回的定位结果包含地址信息option.setNeedDeviceDirect(true); // 返回的定位结果包含手机机头的方向locationClient.setLocOption(option);}}
下载android 百度地图定位实例源码下载用户还喜欢
- 18480 文章数
- 500万+ 热度
作者专栏
编辑推荐
- 淡抹u2引擎,修复内容较多,物有所值
- 界域传说·经典巨作=传世单机(一键安装)
- 丸子版本(175个传世版本大集合)
- GS版本:神话公益服务端+客户端
- 图片放大工具(放大图片不模糊)
- 剪映无限制VIP版
- 传奇世界客户端下载器,史上最全传世客户端
- 传世GS20220920商业引擎注册+登录配置器 解压密码是1
- U2官方排行榜游戏网关 支持元神,支持传家宝
- GS开战传世客户端+服务端
- (淡漠夕阳)u2引擎合区工具
- 传世GS引擎消除“你的游戏客户端版本号过旧,请及时更新”提示
- 传世一机多区双线路配置器--免密码版本
- 传世凤凰登陆器劫持修复软件
- SQLite3 for Navicat
- 传奇世界npc对话框编辑工具
- 传世GS落霞铭文服务器端
- gs_20210409引擎包+注册机(无限制)
- 传奇世界NPC对话封包查看器[支持时长版和极速版]
- 彩虹引擎传世脚本编辑工具1.7版来了,支持函数脚本翻译
评论